package com.example.jinzproduct.controller;

import com.baomidou.mybatisplus.plugins.Page;
import com.example.commons.entity.MsgDO;
import com.example.commons.entity.UserDO;
import com.example.commons.utils.ApiResult;
import com.example.commons.utils.JWTUtil;
import com.example.jinzproduct.entity.vo.ShowInit;
import com.example.jinzproduct.server.DictService;
import com.example.jinzproduct.server.MsgService;
import com.example.jinzproduct.server.UserService;
import io.jsonwebtoken.Jwt;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import javafx.beans.binding.MapExpression;
import lombok.extern.java.Log;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 关于平台/平台客服相关接口
 * @author mengzhichao
 * @create 2022-09-01-14:17
 */
@RestController
@RequestMapping("/jinZhiIndex/jzmy/home")
public class JzmyController {

    @Autowired
    private DictService dictService;

    @Autowired
    private UserService userService;

    @Autowired
    private MsgService msgService;

    /**
     * api小程序端-关于平台数据接口--公开方法，不需要登录
     *
     * @Description: 关于平台信息查询
     */
    @GetMapping("/selAboutUs")
    @Transactional
    public ApiResult<?> selAboutUs() {
        Map returnMaps = new HashMap();
        Map<String, String> map = new HashMap<>();
        map.put("name", "关于平台说明图");
        map.put("type", "gypt_smt");
        List<Map> maps = dictService.selAboutUs(map);
        returnMaps.put("aboutUs", maps);
        return ApiResult.success(returnMaps);
    }


    @GetMapping("/autoResponse")
    @Transactional
    public ApiResult<?> autoResponse(String type) {
        Map<String, String> map = autoResponseInit();
        return ApiResult.success("请求成功",map.get(type));
    }



    @GetMapping("/showInit")
    @Transactional
    public ApiResult<?> showInit() {

        List<ShowInit> list =new ArrayList<>();
        ShowInit showInit = new ShowInit();
        showInit.setId("1");
        showInit.setTitle("如何申请成为试点院校？");

        ShowInit showInit2 = new ShowInit();
        showInit2.setId("2");
        showInit2.setTitle("试点院校需要具备哪些条件？");

        ShowInit showInit3 = new ShowInit();
        showInit3.setId("3");
        showInit3.setTitle("试点院校的申报时间是什么时候？");

        ShowInit showInit4 = new ShowInit();
        showInit4.setId("4");
        showInit4.setTitle("如何申请成为考核站点？");

        ShowInit showInit5 = new ShowInit();
        showInit5.setId("5");
        showInit5.setTitle("考核站点申报流程？");

        ShowInit showInit6 = new ShowInit();
        showInit6.setId("6");
        showInit6.setTitle("申请考核站点有什么要求？");

        ShowInit showInit7 = new ShowInit();
        showInit7.setId("7");
        showInit7.setTitle("如何考取幼儿照护/产后恢复师资证书？");


        ShowInit showInit8= new ShowInit();
        showInit8.setId("8");
        showInit8.setTitle("幼儿照护/产后恢复证书考试成绩在哪查询？");

        ShowInit showInit9= new ShowInit();
        showInit9.setId("9");
        showInit9.setTitle("幼儿照护/产后恢复证书考试后多久颁发证书？");

        ShowInit showInit10= new ShowInit();
        showInit10.setId("10");
        showInit10.setTitle("幼儿照护/产后恢复证书在哪里可以查询/下载？");
        list.add(showInit);
        list.add(showInit2);
        list.add(showInit3);
        list.add(showInit4);
        list.add(showInit5);
        list.add(showInit6);
        list.add(showInit7);
        list.add(showInit8);
        list.add(showInit9);
        list.add(showInit10);
        return ApiResult.success(list);
    }



    private Map<String,String> autoResponseInit(){
        Map<String,String> map =new HashMap<>();
        map.put("1","在职业技能等级证书信息管理服务平台(https://vslc.ncb.edu.cn/)申报即可。<br />\n" +
                "具体申报流程请联系区域考评负责人，或电话咨询400-8718-776。<br />");
        map.put("2","院校需要有预申报证书对应专业，且满三年及以上。");
        map.put("3","每年3-6月开通申报，不同的省份开通时间不同，具体咨询区域考评负责人。");
        map.put("4","在湖南金职伟业母婴护理有限公司官网（https://www.jz1x.com）上进行申报，通过审核之后，在职业技能等级证书信息管理服务平台(https://vslc.ncb.edu.cn/)进行申报。");
        map.put("5","金职伟业官网考核站点申报流程<br/>\n" +
                "1、进入湖南金职伟业母婴护理有限公司官网（https://www.jz1x.com），点击用户登录。<br />\n" +
                "2、登录账户密码后，点击站点申请，填写对应信息（以幼儿照护职业技能等级证书为例）。<br />\n" +
                "①考评基本情况：填写本校的基本信息；<br />\n" +
                "②考评团队：每40名考生须配备考务考评员2名，考务技术员1名（按比例增加，上述考务考评员、考务技术员须经过培训评价组织认证）。<br />\n" +
                "③考场场地设备：理论考场、实操考场、考务办公室等场地的基础设备设施并说明情况；<br />\n" +
                "④实习就业单位：按照10名考生(以试点申报核准数为基准)对应1个实习就业单位(幼儿照护相关企业)的比例来填写。<br />\n" +
                "⑤承诺书：需下载后盖章扫描或拍照上传。<br />\n" +
                "3、提交站点申请后，用户可进入个人中心考核站点审核记录，查看站点审核情况。<br />\n" +
                "注意：产后恢复职业技能等级证书考核站点申请和幼儿照护职业技能等级证书考核站点申请流程为一致。<br />\n" +
                "<br />\n" +
                "1+X平台考核站点申报流程<br />\n" +
                "1、申报考核站点<br />\n" +
                "点击“申报考核站点”按钮，填写申报考核站点相关信息，其中“考核站点名称”无需填写，将根据院校名称+考核证书的展示方式自动生成。<br />\n" +
                "注意：为保证考核站点唯一性，若之前已经申报过考核站点，则不允许再次提交申报考核站点。<br />\n" +
                "2、修改考核站点<br />\n" +
                "对于未提交、审核退回的考核站点，点击右侧“编辑”按钮，可修改考核站点信息。<br />");
        map.put("6","1.证书审批计划大于40人的试点院校。<br />\n" +
                "2.具备考试考评经验。<br />\n" +
                "3.湖南金职伟业母婴护理有限公司官网（https://www.jz1x.com）和职业技能等级证书信息管理服务平台(https://vslc.ncb.edu.cn/)站点申报并审核通过。<br />\n" +
                "4.完成考核站点的团队建设。<br />\n" +
                "5.完成考核站点的硬件环境准备。<br />\n" +
                "6.完成证书考试相关物料准备。<br />\n" +
                "7.能为考生提供实习就业单位。<br />\n" +
                "能为考生提供实习就业单位，应按照10名考生(以试点申报核准数为基准)，对应1个实习就业单位(幼儿照护相关企业)的比例提供实习就业名单，且实习就业单位在幼儿照护证书培训就业服务平台完成注册。<br />");
        map.put("7","湖南金职伟业母婴护理有限公司，每月均将组织幼儿照护/产后恢复师资及考评员培训班，想考取师资证书的老师，可咨询客服了解具体培训安排，培训考核合格后，可获取对应师资培训证书及考评员证书。");
        map.put("8","考生可通过湖南金职伟业母婴护理有限公司官网（https://www.jz1x.com）、金职母婴微信小程序及职业技能等级平台信息管理服务平台（https://vslc.ncb.edu.cn/）查询证书成绩。<br />\n" +
                "1.湖南金职伟业母婴护理有限公司官网:考试管理-考试成绩-选择证书(幼儿照护/产后恢复)-输入学校名称选择考试批次-查询。<br />\n" +
                "2.金职母婴微信小程序进入我的-成绩查询，输入对应信息查询成绩。<br />\n" +
                "3.1+X平台:考试管理-科目成绩-点击展开-输入院校名称或者考试计划-查询。<br />");
        map.put("9","培训评价组织将在学生信息核对无误，且成绩公示期(1个月)结束后3个工作日内，完成证书签发工作。考生如未及时获取到证书，请咨询学校老师。");
        map.put("10","1.学生查询:<br />\n" +
                "从金职母婴小程序首页可以直接进入证书查询，查询证书信息；<br />\n" +
                "在职业技能等级证书信息管理服务平台(https://vslc.ncb.edu.cn/)首页成绩/证书查询,学生输入身份证号码和证书编号即可查询。<br />\n" +
                "2.老师查询:<br />\n" +
                "职业技能等级证书信息管理服务平台(https://vslc.ncb.edu.cn/)证书管理-证书发放管理-选择证书名称-点击证书发放-批量下载电子证书<br />");
        return  map;
    }


    /**
     * 消息中心列表

     * @return
     */
    @GetMapping("/msgListApi")
    ApiResult<?> msgListApi(int current, int number, String state, String type,String id) {
      //  System.out.println("进入消息列表接口+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
        UserDO user = JWTUtil.getUser();
        if (null == user) {
            return ApiResult.invalid();
        }
        Map map = new HashMap();
        if (id!=null){
            map.put("id",id);
        }
        map.put("userId", user.getId());
        map.put("state", state);
        map.put("type", type);
        Page<MsgDO> page = msgService.selMsgPage(current, number, map);
        List<MsgDO> list = page.getRecords();
        for (MsgDO msg : list) {
            msg.setUserName(user.getUsername());
            if (msg.getCreaterId()!=null){
                UserDO user1 = userService.getByUserId(msg.getCreaterId());
                if (user1.getUsername()!=null&&!"".equals(user1.getUsername())){
                    msg.setCreaterName(user1.getUsername());
                }else {
                    msg.setCreaterName("匿名用户");
                }
            }else {
                msg.setCreaterName("匿名用户");
            }
        }
        page.setRecords(list);
        return ApiResult.success(page);
    }


    /**
     * 状态更改
     * @param id
     * @return
     */
    @GetMapping("/updateStateApi")
    @RequiresAuthentication
    public ApiResult<?> updateStateApi(Long id) {
        UserDO user = JWTUtil.getUser();
        if (user == null) {
            return ApiResult.invalid();
        }
        MsgDO msg = msgService.getById(id);
        msg.setState(2);
        msgService.updateById(msg);
        return ApiResult.success();
    }


    /**
     * 判断是否有消息接口
     * @return
     */

    @GetMapping("/showMsgState")
    public ApiResult<?> showMsgState(String isToken){
        int rst = 0;
        int current = 1;
        int number = 10;
        if ("".equals(isToken)||null == isToken){ //如果isToken为空则表示没有登录直接返回0
            return ApiResult.success(rst);
        }
        UserDO user = JWTUtil.getUser();
        Map map = new HashMap();
        map.put("userId", user.getId());
        map.put("state", "0");
        Page<MsgDO> page = msgService.selMsgPage(current, number, map);
        if (page.getRecords().size()>0){
            rst = 1;
        }
        return ApiResult.success(rst);
    }


    /**
     * 联系我们二维码列表展示
     *
     */
    @GetMapping("/showQRCode")
    public ApiResult<?> showQRCode(){
        Map map =new HashMap();
        map.put("type", "QRCode");
        List<Map> maps = dictService.selAboutUs(map);
        return ApiResult.success(maps);
    }

}
